home *** CD-ROM | disk | FTP | other *** search
/ Gekikoh Dennoh Club 2 / Gekikoh Dennoh Club Vol. 2 (Japan).7z / Gekikoh Dennoh Club Vol. 2 (Japan) (Track 01).bin / fsw / zm302 / zm302_s.lzh / EMBEDDMY.HAS < prev    next >
Text File  |  1996-03-01  |  3KB  |  133 lines

  1. embed_with_dummy:                *対応している外部参照を探しだし
  2.     * < zpd_scan(=0:scan,=$ff:no scan)    *そのファイル名を取り出す
  3.     * < mdd_scan(=0:scan,=$ff:no scan)    取りだしの成功した外部参照はダミーで埋める
  4.     * < a5.l=zmd address
  5. reglist    reg    d0-d2/a2-a3/a5
  6.     movem.l    reglist,-(sp)
  7.     move.l    z_comn_offset(a5),d0
  8.     lea    z_comn_offset+4(a5,d0.l),a5
  9.     lea    zpd_scan(pc),a3
  10.     move.w    (a3),d2
  11. pcd_lp01:
  12.     cmp.w    (a3),d2                *エントリ時とマークが違うということは
  13.     bne    exit_ccd            *何等かのファイル名取得したということ
  14.     moveq.l    #0,d0
  15.     move.b    (a5)+,d0
  16.     bmi    exit_ccd            *共通コマンドエンド
  17.     move.l    cmncmdjtbl(pc,d0.w),d0
  18.     beq    unid_error            *未定義のZMDを含んでいる
  19.     bpl    @f
  20.     sub.l    d0,a5
  21.     bra    pcd_lp01
  22. @@:
  23.     jsr    cmncmdjtbl(pc,d0.l)
  24.     bra    pcd_lp01
  25. exit_ccd:
  26.     movem.l    (sp)+,reglist
  27.     rts
  28.  
  29. cmncmdjtbl:
  30.     dc.l    -1                *initialize
  31.     dc.l    juke_error-cmncmdjtbl        *read & exec. cnf file
  32.     dc.l    0                *tempo
  33.     dc.l    0                *全音符カウンタ/拍子セット
  34.     dc.l    0
  35.     dc.l    0
  36.     dc.l    -49                *ボイスセット
  37.     dc.l    cmn_wave_form-cmncmdjtbl    *wave form setting
  38.     dc.l    juke_error-cmncmdjtbl        *adpcm data cnf
  39.     dc.l    -2                *erase adpcm
  40.     dc.l    cmn_block_adpcm-cmncmdjtbl    *read a block data
  41.     dc.l    -1                *current midi in
  42.     dc.l    -1                *current midi out
  43.     dc.l    cmn_midi_trans-cmncmdjtbl    *MIDI生データ転送
  44.     dc.l    cmn_midi_dump-cmncmdjtbl    *trans midi data dump
  45.     dc.l    0                *
  46.     dc.l    cmn_comment-cmncmdjtbl        *comment
  47.     dc.l    cmn_print-cmncmdjtbl        *print message
  48.     dc.l    cmn_dummy-cmncmdjtbl        *dummy code
  49. cmncmdjtbl_end:
  50. n4_of_cmn_cmd:    equ    cmncmdjtbl_end-cmncmdjtbl
  51.  
  52. cmn_dummy:                *なにもしないZMD
  53.     rts
  54.  
  55. cmn_midi_trans:            *MIDIデータ転送
  56.     addq.w    #1,a5        *MIDI I/F(0-2/-1:current)
  57.     moveq.l    #0,d0
  58.     move.b    (a5)+,d0    *str length(0-255)
  59.     add.w    d0,a5        *skip comment str
  60.     bsr    get_cm_l    *d0.l=n of data
  61.     add.l    d0,a5
  62.     rts
  63.  
  64. cmn_wave_form:            *波形メモリセット
  65.     addq.w    #2,a5        *wave no
  66.     bsr    get_cm_l    *d0.l=data size
  67.     add.w    #17,a5
  68.     moveq.l    #0,d1
  69.     move.b    (a5)+,d1    *string len
  70.     add.w    d1,a5
  71.     move.l    a5,d1
  72.     addq.l    #1,d1
  73.     bclr.l    #0,d1        *even
  74.     add.l    d0,d1
  75.     move.l    d1,a5
  76.     rts
  77.  
  78. cmn_block_adpcm:
  79.     move.b    (a5),d1        *zpd id
  80.     cmpi.b    #$20,d1
  81.     bcs    cba_nofn    *$20未満はアドレス指定
  82.     tas.b    (a3)        *zpd_scan marked
  83.     bne    srch_fn_end
  84. trans_cmn_fn:
  85.     moveq.l    #CMN_DUMMY,d1
  86.     move.b    d1,-1(a5)    *CMN_BLOCK_PCMを消す
  87.     lea    filename(pc),a2
  88. @@:
  89.     move.b    (a5),d0
  90.     move.b    d1,(a5)+    *dummyで埋める
  91.     move.b    d0,(a2)+
  92.     bne    @b
  93.     rts
  94. cba_nofn:            *<d1.l=zpd id
  95.     addq.w    #5,a5        *skip id.b,offset.l
  96.     rts
  97.  
  98. cmn_midi_dump:                *バイナリMIDIデータ転送
  99.     move.b    (a5)+,d0
  100.     ext.w    d0
  101.     ext.l    d0
  102.     move.l    d0,2(a3)        *set I/F number to mdd_dest_if
  103.     tst.b    (a5)
  104.     bne    @f
  105.     add.w    #9,a5        *skip 0.b,offset.l,size.l
  106.     rts
  107. @@:
  108.     tas.b    1(a3)        *mdd_scan marked
  109.     beq    trans_cmn_fn
  110.  
  111. cmn_print:            *print
  112. cmn_comment:            *コメント行
  113. srch_fn_end:            *ファイル名の場合
  114.     tst.b    (a5)+
  115.     bne    srch_fn_end    *ファイルネームのエンドを捜して
  116.     rts            *ループに戻る
  117.  
  118. get_cm_w:
  119.     move.b    (a5)+,d0
  120.     lsl.w    #8,d0
  121.     move.b    (a5)+,d0
  122.     rts
  123.  
  124. get_cm_l:
  125.     move.b    (a5)+,d0
  126.     lsl.w    #8,d0
  127.     move.b    (a5)+,d0
  128.     swap    d0
  129.     move.b    (a5)+,d0
  130.     lsl.w    #8,d0
  131.     move.b    (a5)+,d0
  132.     rts
  133.